package sync_protocol

import "gddgame.cc/galaxy/satellite/formula/comet"

type ApplyType byte

const (
	_ ApplyType = iota
	OwnerApplyType
	BelongApplyType
)

type AssignType byte

const (
	_ AssignType = iota
	AgentAssignType
	ObserveAssignType
	TakeoverAssignType
)

type SettingType byte

const (
	_ SettingType = iota
	BindSettingType
	DataSettingType
	VisionSettingType
	GapSettingType
	LocationSettingType
)

type QueueType byte

const (
	_            QueueType = iota
	InfoQueue              = 1
	MessageQueue           = 2
	DataQueue              = 4

	InfoMessageQueue     = 3
	InfoMessageDataQueue = 7
	InfoDataQueue        = 5
	MessageDataQueue     = 6
)

type MessageType byte

const (
	_               MessageType = iota
	StandingMessage             = 0x80
	CancelMessage               = 0x40
)

//type TimeType = byte

const (
	TriggerTime TimeType = iota
	ProcessTime
	MoveTime
)

// Event
const (
	// 切换区域，客户端发送，服务端回发
	Switch comet.DE = iota
	// 设置：bind定位数据发送流，观测区块更新，data接收最新一次的数据更新
	Setting
	// 批量创建item，客户端发送，服务端转发
	Instance
	// 批量销毁destroy，客户端发送，服务端转发
	Destroy
	// 队列消息：
	// 服务端转发info（实时坐标定位，速度，方向）
	// message（协议消息：消息执行者，服务端验证转发）
	// Data（修改item数据，客户端发送，服务端验证）
	Queue
	// 广播，客户端之间发送，和当前坐标有关
	Broadcast
	// 申请所有权 ApplyType：owner，belong 客户端发送，服务端回发
	Apply
	// 分配权()，服务端发送
	// 接收权，客户端发送，服务端转发
	Assign
	// 与时间相关
	// 定时发送、长时间运行
	Time
)
